package com.zzl.mq.storage;

import com.zzl.mq.network.gossip.DataMessagePayload;
import java.util.List;

/**
 * 消息存储接口
 * 定义统一的存储操作接口，遵循接口隔离原则
 */
public interface Storage {
    /**
     * 存储消息
     * @param topic 主题
     * @param message 消息内容
     * @return 是否存储成功
     */
    boolean store(String topic, DataMessagePayload message);
    
    /**
     * 获取指定主题的消息列表
     * @param topic 主题
     * @param offset 消息偏移量
     * @param limit 获取消息的最大数量
     * @return 消息列表
     */
    List<DataMessagePayload> fetch(String topic, long offset, int limit);
    
    /**
     * 删除指定时间之前的消息
     * @param topic 主题
     * @param beforeTime 时间戳
     * @return 删除的消息数量
     */
    int deleteMessagesBefore(String topic, long beforeTime);
    
    /**
     * 获取指定主题的消息数量
     * @param topic 主题
     * @return 消息数量
     */
    long getMessageCount(String topic);
} 